home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / tools / sharp / sxwork2.lzh / サンプル基礎編 / 文字印字 / CPRINT.C < prev    next >
Text File  |  1994-02-20  |  5KB  |  139 lines

  1. /******************************************************************************
  2.  *    cprint.c:    印刷処理関数
  3.  ******************************************************************************
  4.  *    Workroom SX-68K Sample Program Copyright 1994 SHARP
  5.  */
  6. #include <stdio.h>
  7. #include <sxmemory.h>        /* メモリマンを利用するときに必要    */
  8. #include <sxgraph.h>        /* グラフ系マネージャを利用するときに必要 */
  9. #include <control.h>        /* コントロールマンを利用するときに必要    */
  10. #include <dialog.h>        /* ダイアログマンを利用するときに必要    */
  11. #include <print.h>        /* プリントマンを利用するときに必要    */
  12. #include "cprint.h"        /* このプログラム固有のヘッダファイル    */
  13.  
  14. /******************************************************************************
  15.  *    createPrint():    プリントレコードの作成
  16.  ******************************************************************************
  17.  *    引数:    ComVal *pcv    共通変数へのポインタ
  18.  *    戻り値:    BOOLEAN        = TRUE:  作成成功
  19.  *                = FALSE: 作成失敗
  20.  */
  21. BOOLEAN createPrint(ComVal *pcv)
  22. {
  23.     int errCode;
  24.  
  25.     /* プリントハンドルを確保する */
  26.     pcv->printHdl = MMChHdlNew(sizeof(Print));
  27.     if (pcv->printHdl == NULL) {
  28.         pcv->errorCode = 8;    /* 確保できなかった        */
  29.         return FALSE;        /* 失敗したのでFALSEを返す    */
  30.     }
  31.     /* デフォルトのプリンタドライバをオープンする */
  32.     errCode = PMOpen(P_DEFAULT);
  33.     if (errCode < 0 && errCode != -2) {
  34.         pcv->errorCode = 14;    /* ドライバが異常        */
  35.         return FALSE;
  36.     }
  37.     PMSetDefault(pcv->printHdl);    /* プリントレコードに初期値を設定する */
  38.     PMClose();            /* プリンタドライバをクローズする */
  39.     return TRUE;            /* 成功したのでTRUEを返す    */
  40. }
  41.  
  42. /******************************************************************************
  43.  *    setPrint():    印刷環境設定ダイアログのオープン
  44.  ******************************************************************************
  45.  *    引数:    ComVal *pcv    共通変数へのポインタ
  46.  */
  47. void setPrint(ComVal *pcv)
  48. {
  49.     int errCode;
  50.  
  51.     /* デフォルトのプリンタドライバをオープンする */
  52.     errCode = PMOpen(P_DEFAULT);
  53.     if (errCode < 0) {
  54.         if (errCode == -2)
  55.             pcv->errorCode = 13; /* 他のタスクが使用中    */
  56.         else
  57.             pcv->errorCode = 14; /* ドライバが異常        */
  58.     } else {
  59.         /* 印刷環境設定ダイアログを表示する */
  60.         PMImageDialog(pcv->printHdl);
  61.         PMClose();        /* プリンタドライバをクローズする */
  62.     }
  63. }
  64.  
  65. /******************************************************************************
  66.  *    printProc():    印刷処理の実行
  67.  ******************************************************************************
  68.  *    引数:    ComVal *pcv    共通変数へのポインタ
  69.  *    戻り値:    BOOLEAN        = TRUE:  印刷成功
  70.  *                = FALSE: 印刷失敗
  71.  */
  72. BOOLEAN printProc(ComVal *pcv)
  73. {
  74.     int errCode;
  75.     Graph *lastGraph;
  76.  
  77.     /* デフォルトのプリンタドライバをオープンする */
  78.     errCode = PMOpen(P_DEFAULT);
  79.     if (errCode < 0) {
  80.         if (errCode == -2)
  81.             pcv->errorCode = 13; /* 他のタスクが使用中    */
  82.         else
  83.             pcv->errorCode = 14; /* ドライバが異常        */
  84.         return FALSE;
  85.     }
  86.     /* [印刷環境設定]ボタンをインアクティブにする */
  87.     CMShine(pcv->setBtnHdl, C_INACTIVE);
  88.     /* [実行]ボタンをインアクティブにする */
  89.     CMShine(pcv->execBtnHdl, C_INACTIVE);
  90.     /* [中止]ボタンをアクティブにする */
  91.     CMShine(pcv->canBtnHdl, C_ACTIVE);
  92.     lastGraph = GMGetGraph();    /* カレントグラフを退避する    */
  93.     /* プリンタドライバへ印刷文字列を転送する */
  94.     PMDrawString(pcv->printHdl, pcv->prnStrHdl, pcv->fileLen, 0);
  95.     pcv->printFlag = TRUE;        /* 印刷中フラグをセットする    */
  96.     GMSetGraph(lastGraph);        /* カレントグラフを元に戻す    */
  97.     addUpdate(&rcPart);        /* メッセージを書き換える    */
  98.     return TRUE;            /* 成功したのでTRUEを返す    */
  99. }
  100.  
  101. /******************************************************************************
  102.  *    timeOut():    印刷待ちで時間切れ
  103.  ******************************************************************************
  104.  *    引数:    ComVal *pcv    共通変数へのポインタ
  105.  */
  106. void timeOut(ComVal *pcv)
  107. {
  108.     int num;
  109.  
  110.     num = DMError(D_CONT, "プリンタの準備ができていません。");
  111.     if (num == 1)            /* [継続]ボタンが押されたか?    */
  112.         PMAction(P_CONT);    /* 印刷を再開する        */
  113.     else {
  114.         PMAction(P_END);    /* 印刷を終了する        */
  115.         endPrint(pcv);        /* 印刷の終了手続きを行う    */
  116.     }
  117. }
  118.  
  119. /******************************************************************************
  120.  *    endPrint():    印刷の終了手続き
  121.  ******************************************************************************
  122.  *    引数:    ComVal *pcv    共通変数へのポインタ
  123.  */
  124. void endPrint(ComVal *pcv)
  125. {
  126.     MMHdlDispose(pcv->prnStrHdl);    /* 印刷文字列用ハンドルを解放する */
  127.     pcv->prnStrHdl = NULL;        /* ハンドルをクリアする        */
  128.     PMClose();            /* プリンタドライバをクローズする */
  129.     pcv->printFlag = FALSE;        /* 印刷中フラグをクリアする    */
  130.     pcv->loadFlag = FALSE;        /* 読み込み済フラグをクリアする    */
  131.     /* [印刷環境設定]ボタンをアクティブにする */
  132.     CMShine(pcv->setBtnHdl, C_ACTIVE);
  133.     /* [実行]ボタンをアクティブにする */
  134.     CMShine(pcv->execBtnHdl, C_ACTIVE);
  135.     /* [中止]ボタンをインアクティブにする */
  136.     CMShine(pcv->canBtnHdl, C_INACTIVE);
  137.     addUpdate(&rcPart);        /* メッセージを書き換える    */
  138. }
  139.